
using System;
using System.Collections;
using QdbUnit.Extensions;
using QdbUnit.Fixtures;
using Qdb.Config;
using Qdb.Ext;
using Qdb.Internal;

namespace QdbUnit.Extensions
{
	public interface IQdbFixture : ILabeled
	{
		/// <exception cref="System.Exception"></exception>
		void Open(IQdbTestCase testInstance);

		/// <exception cref="System.Exception"></exception>
		void Close();

		/// <exception cref="System.Exception"></exception>
		void Reopen(IQdbTestCase testInstance);

		void Clean();

		LocalObjectContainer FileSession();

		IExtObjectContainer Db();

		IConfiguration Config();

		bool Accept(Type clazz);

		/// <exception cref="System.Exception"></exception>
		void Defragment();

		void ConfigureAtRuntime(IRuntimeConfigureAction action);

		void FixtureConfiguration(IFixtureConfiguration configuration);

		void ResetConfig();

		IList UncaughtExceptions();
	}
}
